export const del_eventTarget = {
  dispatchEvent: function (): boolean {
    throw new Error('Function not implemented.');
  },
  addEventListener: function (): void {
    throw new Error('Function not implemented.');
  },
  removeEventListener: function (): void {
    throw new Error('Function not implemented.');
  },
};

export const del_node = {
  // #region
  ELEMENT_NODE: 1,
  ATTRIBUTE_NODE: 2,
  TEXT_NODE: 3,
  CDATA_SECTION_NODE: 4,
  ENTITY_REFERENCE_NODE: 5,
  ENTITY_NODE: 6,
  PROCESSING_INSTRUCTION_NODE: 7,
  COMMENT_NODE: 8,
  DOCUMENT_NODE: 9,
  DOCUMENT_TYPE_NODE: 10,
  DOCUMENT_FRAGMENT_NODE: 11,
  NOTATION_NODE: 12,
  DOCUMENT_POSITION_DISCONNECTED: 1,
  DOCUMENT_POSITION_PRECEDING: 2,
  DOCUMENT_POSITION_FOLLOWING: 4,
  DOCUMENT_POSITION_CONTAINS: 8,
  DOCUMENT_POSITION_CONTAINED_BY: 16,
  DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32,
  nodeName: '',
  nodeType: 0,
  nodeValue: null,
  childNodes: undefined,
  firstChild: null,
  lastChild: null,
  nextSibling: null,
  parentElement: null,
  parentNode: null,
  previousSibling: null,
  textContent: null,
  baseURI: '',
  isConnected: false,
  ownerDocument: null,
  appendChild: function () {
    throw new Error('Function not implemented.');
  },
  cloneNode: function () {
    throw new Error('Function not implemented.');
  },
  compareDocumentPosition: function () {
    throw new Error('Function not implemented.');
  },
  contains: function () {
    throw new Error('Function not implemented.');
  },
  getRootNode: function () {
    throw new Error('Function not implemented.');
  },
  hasChildNodes: function (): boolean {
    throw new Error('Function not implemented.');
  },
  insertBefore: function <T extends Node>() {
    throw new Error('Function not implemented.');
  },
  isDefaultNamespace: function (namespace: string | null): boolean {
    throw new Error('Function not implemented.');
  },
  isEqualNode: function (otherNode: Node | null): boolean {
    throw new Error('Function not implemented.');
  },
  isSameNode: function (otherNode: Node | null): boolean {
    throw new Error('Function not implemented.');
  },
  lookupNamespaceURI: function (prefix: string | null): string | null {
    throw new Error('Function not implemented.');
  },
  lookupPrefix: function (namespace: string | null): string | null {
    throw new Error('Function not implemented.');
  },
  normalize: function (): void {
    throw new Error('Function not implemented.');
  },
  removeChild: function <T extends Node>(child: T): T {
    throw new Error('Function not implemented.');
  },
  replaceChild: function <T extends Node>(node: Node, child: T): T {
    throw new Error('Function not implemented.');
  },
  // #endregion
  ...del_eventTarget,
};

export const del_sameDEF = {
  childElementCount: 0,
  children: undefined,
  firstElementChild: null,
  lastElementChild: null,
  append() {
    throw new Error('---');
  },
  prepend() {
    throw new Error('---');
  },
  querySelector() {
    throw new Error('---');
  },
  querySelectorAll() {
    throw new Error('---');
  },
  replaceChildren(...nodes: (Node | string)[]) {
    throw new Error('---');
  },
  ...del_node,
};

// ---------------------------------------------------------------------------------------------------
export const del_sameDF = {
  getElementById: function (elementId: string): HTMLElement | null {
    throw new Error('Function not implemented.');
  },
  ...del_sameDEF,
};

const del_sameEF = {
  // empty!!
};

export const del_sameDE = {
  getElementsByClassName() {
    throw new Error('---');
  },
  getElementsByTagName() {
    throw new Error('---');
  },
  getElementsByTagNameNS() {
    throw new Error('---');
  },
  getAnimations() {
    throw new Error('---');
  },
  ...del_sameDEF,
};

const del_myDocumentFragment = {
  ...del_sameDF,
};

// 已涉及：
const baks = {
  // document:
  fullscreen: false,
  fullscreenEnabled: false,
  exitFullscreen: function (): Promise<void> {
    throw new Error('Function not implemented.');
  },
  fullscreenElement: null,
  // element:
  requestFullscreen: function (): Promise<void> {
    throw new Error('Function not implemented.');
  },
  animate: function () {
    throw new Error('Function not implemented.');
  },
  // window:
  cancelAnimationFrame: function (handle: number): void {
    throw new Error('Function not implemented.');
  },
  requestAnimationFrame: function (callback: FrameRequestCallback): number {
    throw new Error('Function not implemented.');
  },
};
const baksEvents = {
  // document + element:
  onfullscreenchange: null,
  onfullscreenerror: null,
  //   htmlElement + window + Document：
  onanimationcancel: null,
  onanimationend: null,
  onanimationiteration: null,
  onanimationstart: null,
  onwebkitanimationend: null,
  onwebkitanimationiteration: null,
  onwebkitanimationstart: null,

  ontransitioncancel: null,
  ontransitionend: null,
  ontransitionrun: null,
  ontransitionstart: null,
  onwebkittransitionend: null,
};
